package cn.ffcs.bpmpvc.services;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import cn.ffcs.bpmpvc.dao.ProductFlowDao;
import cn.ffcs.bpmpvc.svc.ProcessPvcService;
import cn.ffcs.bpmpvc.svc.TaskAssignBean;
import cn.ffcs.bpmpvc.svc.TaskService;
import cn.ffcs.common.dao.AttachDAO;
import cn.ffcs.common.model.Attach;
import cn.ffcs.organ.model.Person;
import cn.ffcs.product.dao.ProductDAO;
import cn.ffcs.product.dao.ProductManagerDAO;
import cn.ffcs.product.dao.ProductReferenceDAO;
import cn.ffcs.product.model.Product;
import cn.ffcs.product.model.ProductManager;
import cn.ffcs.product.model.ProductReference;
import cn.ffcs.productdict.dao.ProductDictDAO;
import cn.ffcs.productdict.model.ProductDict;
import cn.ffcs.ref.dao.ProductRefSortDAO;
import cn.ffcs.ref.model.ProductRefSort;
import cn.ffcs.sort.service.IProductSortService;

public interface ProductFlowService {
	public ProductDAO<Product> getProductDAO();
	public ProductReferenceDAO<ProductReference> getProductReferenceDAO();
	public ProductManagerDAO<ProductManager> getProductManagerDAO();
	public ProductDictDAO<ProductDict> getProductDictDAO();
	public ProductRefSortDAO<ProductRefSort> getProductRefSortDAO();
	public ProductFlowDao getProductFlowDao();
	public AttachDAO<Attach> getAttachDAO();
	public AppBusinessReqService getAppBusinessReqService();
	public ProcessPvcService getProcessPvcService();
	public TaskService getTaskService();
	public IProductSortService getProductSortService();
	public String getProcessId();
	
	
	public void saveAndStartFlow(String processConfigId, Person startPerson,List<TaskAssignBean> nextTasksList, boolean isCommit,Product product,String productSortIdArr[],String propertyValueArr[],String infoIdsArr[],HttpServletRequest request) throws Exception;	
	
	public void commitApplyTask(String flowTaskId,String content,String procinstId,List<TaskAssignBean> nextTasksList, boolean isCommit,Product productForm,String productSortIdArr[],String propertyValueArr[],String infoIdsArr[],HttpServletRequest request) throws Exception;
	
	public void commitArchiveTask(String flowTaskId,String content,String procinstId,List<TaskAssignBean> nextTasksList, boolean isCommit) throws Exception;
	/**
	 * 取文档类型
	 * @return
	 */
	public List getRefeTypeList();
}
